package com.cqh.recruit.pojo.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.EqualsAndHashCode;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 活动信息表实体类
 */
@EqualsAndHashCode(callSuper = false)
@TableName("activity")
public class Activity {

    /**
     * 活动主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 创建活动的员工ID（逻辑外键）
     */
    @TableField("employee_id")
    private Long employeeId;

    /**
     * 活动名称
     */
    @TableField("name")
    private String name;

    /**
     * 活动开始时间
     */
    @TableField("activity_start_time")
    private LocalDate activityStartTime;

    /**
     * 活动详情
     */
    @TableField("activity_detail")
    private String activityDetail;

    /**
     * 活动结束时间
     */
    @TableField("activity_end_time")
    private LocalDate activityEndTime;

    /**
     * 报名开始时间
     */
    @TableField("signup_start_time")
    private LocalDate signupStartTime;

    /**
     * 报名结束时间
     */
    @TableField("signup_end_time")
    private LocalDate signupEndTime;

    /**
     * 活动图片URL
     */
    @TableField("image")
    private String image;

    /**
     * 活动状态：1-未开始，2-报名中，3-进行中，4-已结束，5-已取消
     */
    @TableField("status")
    private Integer status;

    /**
     * 活动地点
     */
    @TableField("location")
    private String location;

    /**
     * 活动容量/人数限制
     */
    @TableField("capacity")
    private Integer capacity;

    /**
     * 当前报名人数
     */
    @TableField("current_participants")
    private Integer currentParticipants;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 修改时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 逻辑删除：0-未删除，1-已删除
     */
    @TableField("is_deleted")
    @TableLogic
    private Integer deleted;

    public String getActivityDetail() {
        return activityDetail;
    }

    public void setActivityDetail(String activityDetail) {
        this.activityDetail = activityDetail;
    }

    public LocalDate getActivityEndTime() {
        return activityEndTime;
    }

    public void setActivityEndTime(LocalDate activityEndTime) {
        this.activityEndTime = activityEndTime;
    }

    public LocalDate getActivityStartTime() {
        return activityStartTime;
    }

    public void setActivityStartTime(LocalDate activityStartTime) {
        this.activityStartTime = activityStartTime;
    }

    public Integer getCapacity() {
        return capacity;
    }

    public void setCapacity(Integer capacity) {
        this.capacity = capacity;
    }

    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }

    public Integer getCurrentParticipants() {
        return currentParticipants;
    }

    public void setCurrentParticipants(Integer currentParticipants) {
        this.currentParticipants = currentParticipants;
    }

    public Integer getDeleted() {
        return deleted;
    }

    public void setDeleted(Integer deleted) {
        this.deleted = deleted;
    }

    public Long getEmployeeId() {
        return employeeId;
    }

    public void setEmployeeId(Long employeeId) {
        this.employeeId = employeeId;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getLocation() {
        return location;
    }

    public void setLocation(String location) {
        this.location = location;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public LocalDate getSignupEndTime() {
        return signupEndTime;
    }

    public void setSignupEndTime(LocalDate signupEndTime) {
        this.signupEndTime = signupEndTime;
    }

    public LocalDate getSignupStartTime() {
        return signupStartTime;
    }

    public void setSignupStartTime(LocalDate signupStartTime) {
        this.signupStartTime = signupStartTime;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public LocalDateTime getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }
}